﻿using System;
using Csla;
using Csla.Data;
using Csla.Server;
using Utpl.Syllabus.Framework;
using Utpl.Syllabus.Framework.Csla.Base;
using DataPortal = Csla.DataPortal;

namespace Utpl.Syllabus.Reconocimiento.BL
{
    /// <summary>
    /// Estereotipo: ReadOnlyList
    /// Reponsabilidad: Obtener una lista de componente o asignaturas de los programas academicos del sistema anterior
    /// Autor: Luis Cuenca Macas - Enovatraining. Cia. Ltda.
    /// Fecha: 17/12/2012 10:12:12 AM
    /// </summary>
    [NotAuthorize]
    [Serializable]
    [ObjectFactory("Object=EquivalenciaComponenteList;Assembly=Utpl.Syllabus.Reconocimiento.BL")]
    public class EquivalenciaComponenteList : SyReadOnlyChildListBase<EquivalenciaComponenteList, EquivalenciaComponenteInfo>
    {

        #region Factory Methods

        /// <summary>
        /// Método que permite Obtener los componentes origen de una Equivalencia
        /// </summary>
        /// <param name="padre">ClasePadre padre</param>
        /// <returns>EquivalenciaComponenteList</returns>
        internal static EquivalenciaComponenteList Get(int EquivalenciaId)
        {
            return DataPortal.Fetch<EquivalenciaComponenteList>(new SingleCriteria<EquivalenciaComponenteList, int>(EquivalenciaId));
        }

        /// <summary>
        /// Método que permite Obtener los componentes origen de una Equivalencia
        /// </summary>
        /// <param name="padre">ClasePadre padre</param>
        /// <returns>EquivalenciaComponenteList</returns>
        internal static EquivalenciaComponenteList Get(EquivalenciaComponenteCriteria criteria)
        {
            return DataPortal.Fetch<EquivalenciaComponenteList>(criteria);
        }

        /// <summary>
        /// Constructor Privado de EquivalenciaComponenteList
        /// </summary>
        public EquivalenciaComponenteList() { }



        #endregion
    }

    /// <summary>
    /// Estereotipo: EditableChild
    /// Responsabilidad: Data de los componentes del programa academico del sistema anterior  
    /// </summary>
    [Serializable]
    [ObjectFactory("Object=EquivalenciaComponenteInfo;Assembly=Utpl.Syllabus.Reconocimiento.BL")]
    public class EquivalenciaComponenteInfo : SyReadOnlyChildBase<EquivalenciaComponenteInfo>
    {       

        #region < PROPIEDADES >

        /// <summary>
        /// Nombre del componente Origen
        /// </summary>
        public string Nombre { get;  set; }

        /// <summary>
        /// Codigo del componente Origen
        /// </summary>
        public string Codigo { get; internal set; }

        /// <summary>
        /// Numero de creditos del componente Origen
        /// </summary>
        public int Creditos { get; internal set; }

        /// <summary>
        /// Id del Grupo de Credito del componente Origen
        /// </summary>
        public int GrupoCreditoId { get; internal set; }

        /// <summary>
        /// Grupo de Credito del componente Origen
        /// </summary>
        public string GrupoCredito { get; internal set; }

        /// <summary>
        /// Nivel del componente Origen
        /// </summary>
        public int Nivel { get; internal set; }

        /// <summary>
        /// Nota del componente Origen
        /// </summary>
        public int Nota { get; internal set; }

        /// <summary>
        /// Id de asignatura Origen
        /// </summary>
        public int AsignaturaId { get; internal set; }

        /// <summary>
        /// Id del Plan de Estudio
        /// </summary>
        public int PlanEstudioId { get; internal set; }

        /// <summary>
        /// Nombre del Plan de Estudio
        /// </summary>
        public string PlanEstudio { get; internal set; }

        /// <summary>
        /// Estado
        /// </summary>
        public string Estado { get; internal set; }
        #endregion


        #region Factory Methods



        /// <summary>
        /// Método que permite Obtener una V2EquivalenciaComponenteSimpleInfo
        /// </summary>
        /// <param name="sdr">Identificador de la V2EquivalenciaComponenteSimpleInfo</param>
        /// <returns>V2EquivalenciaComponenteSimpleInfo</returns>
        public static EquivalenciaComponenteInfo Get(SafeDataReader sdr)
        {
            return DataPortal.FetchChild<EquivalenciaComponenteInfo>(sdr);
        }

        /// <summary>
        /// Constructor Privado de EquivalenciaComponentes
        /// </summary>    
        public EquivalenciaComponenteInfo() { }



        #endregion

    }
}


